// utils/request.js
// const BASE_URL = 'https://api.example.com'; // 替换为你的 API 基础 URL

// 响应拦截器
const responseInterceptor = (response) => {
	console.log(response, 'response')
  // 这里可以处理响应数据，例如：
  if (response.statusCode === 200 && response.data.respCode === '0000') {
    return response.data; // 正常返回数据
  } else  {
	// 处理登录过期的情况
	  if (response.statusCode === 401) {
		// 登录过期，执行登出操作
		handleExpiredToken();
	  }
	  uni.showToast({
		title: response.data.respMsg,
		icon: 'none',
		duration: 2000
	  });
    // 可以在这里统一处理错误，例如：
    throw new Error(`请求失败，状态码：${response.statusCode}`);
  }
};

// 处理登录过期
const handleExpiredToken = () => {
  // 提示用户
 //  uni.showToast({
 //    title: '登录信息已过期，请重新登录',
	// icon: 'none',
 //    duration: 2000
 //  });
  // 清除本地存储中的用户信息和权限
  uni.removeStorageSync('App-Token');
  uni.removeStorageSync('userPermissions');

  // 跳转到登录页面
  uni.redirectTo({
    url: '/pages/index/login' // 替换为你的登录页面路径
  });
};

// 封装请求函数
const request = (options) => {
	// 从本地获取 token
	const token = uni.getStorageSync('App-Token');
	uni.showLoading({
		title: "加载中"
	})
	
  // 默认配置
  const defaultOptions = {
    method: 'GET', // 默认请求方法
    header: {
      'Content-Type': 'application/json', // 默认请求头
	  'Authorization': token ? `Bearer ${token}` : '', // 添加 token
    },
    data: {},
  };

  // 合并用户传入的配置
  options = { ...defaultOptions, ...options };

  return new Promise((resolve, reject) => {
    uni.request({
      url: `${options.url}`, // 完整请求 URL
      method: options.method,
      header: options.header,
      data: options.data,
      success: (res) => {
        try {
		  const data = responseInterceptor(res); // 调用响应拦截器
		  resolve(data); // 处理成功的响应
		} catch (error) {
		  reject(error.message); // 处理错误
		}
      },
      fail: (err) => {
		  uni.showToast({
		    title: err.respMsg,
			icon: 'none',
		    duration: 2000
		  });
        reject(`请求失败：${err}`); // 请求失败，返回错误信息
      },
	  complete() {
	  	uni.hideLoading();
	  }
    });
  });
};

// 导出请求函数
export default request;